export default {
  // 开启命名空间
  namespaced:true,
  
  // state数据
  state:()=>({
    // 3.读取本地的收货地址数据，初始化address对象，
    address:JSON.parse(uni.getStorageSync('address') || '{}'),
    // 登陆成功之后的token字符串
    token:uni.getStorageSync('token') || '',
    // 用户的信息对象
    userinfo:JSON.parse(uni.getStorageSync('userinfo') || '{}'),
    // 重定向的 Object对象{openType,from}
    redirectInfo:null
  }),
  
  // mutations方法，第一个参数默认为state，第二个参数为方法传递的参数，没有第三个参数
  mutations:{
    // 更新收货地址
    updateAddress(state,address){
      state.address = address;
      // 2.通过this.commit() 方法，调用m_user模块下的saveAddressToStorage 方法将 address对象持久化存储到本地，
      this.commit('m_user/saveAddressToStorage')
    },
    // 1.定义将address持久化存储到本地 mutations 方法，
    saveAddressToStorage(state){
      uni.setStorageSync('address',JSON.stringify(state.address));
    },
    updateUserInfo(state,userinfo){
      state.userinfo = userinfo;
       // 通过this.commit() 方法，调用m_user模块下的saveUserInfoToStorage 方法将 userinfo 对象持久化存储到本地，
      this.commit('m_user/saveUserInfoToStorage');
    },
    // 将userinfo持久化存储到本地
    saveUserInfoToStorage(state){
      uni.setStorageSync('userinfo',JSON.stringify(state.userinfo));
    },
    // 更新token字符串，
    updateToken(state,token){
      state.token = token
      // 通过this.commit()方法，调用m_user模块下的 saveTokenToStorage 方法，将token字符串持久化存储到本地，
      this.commit('m_user/saveTokenToStorage')
    },
    // 将token字符串持久化存储到本地
    saveTokenToStorage(state){
      uni.setStorageSync('token',state.token);
    },
    // 更新重定向的信息对象
    updateRedirectInfo(state,info){
      state.redirectInfo = info;
      console.log(state.redirectInfo)
    }
  },
  
  // 数据包装器
  getters:{
    
     // 计算属性，渲染拼接收货地址 的 详细地址
    addstr(state){
      if(state.address.provinceName === false){
        return '';
      }else{
        // 拼接 省、市、区，详细地址的字符串返回给用户，
        return state.address.provinceName + state.address.cityName + state.address.countyName + state.address.detailInfo;
      }
    },
  },
}